#include <iostream>
#include <stddef.h>
#include <string.h>
#include<string>
using namespace std;

void test(void *p)
{
    cout << "p is a pointer" << p << endl;
}
void test(int num)
{
    cout << "num is int" << num << endl;
}

int main(int argc, char * argv[])
{
    char * a = new char [10];
    memset(a, 'A', 8);       // memset是计算机中C/C++语言初始化函数。作用是将一块内存中的内容全部设定为指定为值，通常为新申请的内存做初始化工作。
    // void * memset(void *s, int ch, size_t n); 将s中当前位置后面的n(typedef unsigned int size_t)个字节用ch替换并返回s
    a[8] = 'A';
    a[9] = '\0';
    cout << a << " " << strlen(a) << endl;
    string str = a;
    cout << str << endl;
    delete [] a;


    // nullptr与NULL区别
    // stddef.h中出现
    // #undef NULL
    // #if defined(__cplusplus)
    // #define NULL 0
    // #else
    // #define NULL ((void *)0)
    // #endif
    // 在C++中NULL就是0，将其当成空指针只是一种无可奈何的选择
    // C++中不能将void *类型的指针隐式转换成其他类型
    test(nullptr);
    return 0;
}
